#!/usr/bin/env python
import os


def application(environ, start_response):
	ctype = 'text/plain'

	from rpy2.robjects import Formula, r
	from rpy2.robjects.packages import importr
	import rpy2.robjects as robjects
	
	
	#
	#  main():
	#
	if __name__ == '__main__':
	   ip   = os.environ['OPENSHIFT_INTERNAL_IP']
	   port = 8080
	   zapp = imp.load_source('application', 'wsgi/application')
	
	   print('Starting WSGIServer on %s:%d ... ' % (ip, port))
	   run_simple_httpd_server(zapp.application, ip, port)
	
	
	#iris_predict = str(robjects.r['pi'][0])
	r('attach(women)')
	iris_predict = str(r('summary(EuStockMarkets)'))
	iris_predict = "# summary on native R data set 'EuStockMarkets'<br>&gt; summary(EuStockMarkets)<br>" + iris_predict


	if environ['PATH_INFO'] == '/health':
		response_body = "1"
	elif environ['PATH_INFO'] == '/env':
		response_body = ['%s: %s' % (key, value)
                    for key, value in sorted(environ.items())]
		response_body = '\n'.join(response_body)
	else:
		ctype = 'text/html'
		response_body = '''<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Welcome to Python-3.3 running on OpenShift</title>
  <style>
  html { 
  background: black; 
  }
  body {
    background: #333;
    background: -webkit-linear-gradient(top, black, #666);
    background: -o-linear-gradient(top, black, #666);
    background: -moz-linear-gradient(top, black, #666);
    background: linear-gradient(top, black, #666);
    color: white;
    font-family: "Helvetica Neue",Helvetica,"Liberation Sans",Arial,sans-serif;
    width: 40em;
    margin: 0 auto;
    padding: 3em;
  }
  a {
    color: white;
  }

  h1 {
    text-transform: capitalize;
    -moz-text-shadow: -1px -1px 0 black;
    -webkit-text-shadow: 2px 2px 2px black;
    text-shadow: -1px -1px 0 black;
    box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.5);
    background: #CC0000;
    width: 22.5em;
    margin: 1em -2em;
    padding: .3em 0 .3em 1.5em;
    position: relative;
  }
  h1:before {
    content: '';
    width: 0;
    height: 0;
    border: .5em solid #91010B;
    border-left-color: transparent;
    border-bottom-color: transparent;
    position: absolute;
    bottom: -1em;
    left: 0;
    z-index: -1000;
  }
  h1:after {
    content: '';
    width: 0;
    height: 0;
    border: .5em solid #91010B;
    border-right-color: transparent;
    border-bottom-color: transparent;
    position: absolute;
    bottom: -1em;
    right: 0;
    z-index: -1000;
  }
  h2 { 
    margin: 2em 0 .5em;
    border-bottom: 1px solid #999;
  }

  pre {
    background: black;
    padding: 1em 0 0;
    -webkit-border-radius: 1em;
    -moz-border-radius: 1em;
    border-radius: 1em;
    color: #9cf;
  }

  ul { 
    margin: 0; 
    padding: 0;
  }
  li {
    list-style-type: none;
    padding: .5em 0;
  }

  .brand {
    display: block;
    text-decoration: none;
  }
  .brand .brand-image {
    float: left;
    border:none;
  }
  .brand .brand-text {
    float: left;
    font-size: 24px;
    line-height: 24px;
    padding: 4px 0;
    color: white;
    text-transform: uppercase;
  }
  .brand:hover,
  .brand:active {
    text-decoration: underline;
  }

  .brand:before,
  .brand:after {
    content: ' ';
    display: table;
  }
  .brand:after {
    clear: both;
  }
  </style>
</head>
<body>
  <a href="http://openshift.com" class="brand">
    <img class="brand-image"
      alt="OpenShift logo"
      src="">
    <div class="brand-text"><strong>Open</strong>Shift</div>
  </a>
  <h1>
    Welcome to Python-3.3 running on OpenShift
  </h1>
  <p>
    This is a sample WSGI application running on Python 3.3
  </p>
  <p>
    In order to commit to your new project, go to your projects git repo (created with the rhc app create command).  Make your changes, then run:
  </p>
  <pre>
    git commit -a -m 'Some commit message'
    git push
  </pre>
  <p>
    Then reload this page.
  </p>
  
  <h2>
    What's next?
  </h2>
  <ul>
    <li>
      Why not visit us at <a href="http://openshift.redhat.com">http://openshift.redhat.com</a>, or
    </li>
    <li>
      You could get help in the <a href="http://www.redhat.com/openshift">OpenShift forums</a>, or
    </li>
    <li>
      You're welcome to come chat with us in our IRC channel at #openshift on freenode.net
    </li>
  </ul>
	<pre> ''' + iris_predict + ''' </pre></body> </html>'''

	status = '200 OK'
	response_headers = [('Content-Type', ctype), ('Content-Length', str(len(response_body)))]
	#
	start_response(status, response_headers)
	return [response_body.encode('utf-8') ]

#
# Below for testing only
#
if __name__ == '__main__':
	from wsgiref.simple_server import make_server
	httpd = make_server('localhost', 8051, application)
	# Wait for a single request, serve it and quit.
	httpd.handle_request()
